package br.com.Atv04;

public class FuncionarioChefe extends Funcionario{

	//atributos
	private double valor_inicial;
	private double gratificacao;
	private Funcionario funcionarioAcessor;
	
	//construtores
	public FuncionarioChefe() {}
		
	public FuncionarioChefe(String cpf, String nome, String idade, double salario) {
		super(cpf, nome, idade, salario);
	}

	public FuncionarioChefe(double valor_inicial, double gratificacao, Funcionario funcionarioAcessor) {
		super();
		this.valor_inicial = valor_inicial;
		this.gratificacao = gratificacao;
		this.funcionarioAcessor = funcionarioAcessor;
	}
	
	//getters and setters
	public double getValor_inicial() {
		return valor_inicial;
	}
	
	public void setValor_inicial(double valor_inicial) {
		this.valor_inicial = valor_inicial;
	}
	public double getGratificacao() {
		return gratificacao;
	}
	public void setGratificacao(double gratificacao) {
		this.gratificacao = gratificacao;
	}
	public Funcionario getFuncionarioAcessor() {
		return funcionarioAcessor;
	}
	
	public void setFuncionarioAcessor(Funcionario funcionarioAcessor) throws Exception
	{
		if (funcionarioAcessor instanceof FuncionarioHorario || funcionarioAcessor instanceof FuncionarioChefe)
		{
			throw new Exception("Acessor deve ser apenas do tipo Funcionario.");
		}
		else
		{
			this.funcionarioAcessor = funcionarioAcessor;
		}
	}
	
	@Override
	public double obterSalario() {
		double salario = valor_inicial + gratificacao; 
		return salario;
	}

	//toString
	@Override
	public String toString() {
		return "Funcionario [cpf=" + super.getCpf() + ", nome=" + super.getNome() + ", idade="
				+ super.getIdade() + ", salario=" + super.obterSalario() + ", Acessor: " + funcionarioAcessor.getNome() + "]";
	}
	
	
	
	
	
}
